package com.tedu.manager;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.tedu.element.ElementObj;
import com.tedu.element.map.GameMap;

/**
 * @说明 本类是元素管理器，专门存储所有的元素，同时，提供方法
 * 给予视图和控制获取数据
 */
public class ElementManager {
    private Map<GameElement, List<ElementObj>> gameElements;

    public Map<GameElement, List<ElementObj>> getGameElements() {
        return gameElements;
    }

    public void addElement(ElementObj obj, GameElement ge) {
        gameElements.get(ge).add(obj);
    }

    public List<ElementObj> getElementsByKey(GameElement ge) {
        return gameElements.get(ge);
    }

    private static ElementManager EM = null;

    public static synchronized ElementManager getManager() {
        if (EM == null) {   //控制判定
            EM = new ElementManager();
        }
        return EM;
    }

    private ElementManager() {
        init(); //实例化方法
    }

    /**
     * 初始化/重置管理器
     */
    public void init() {
        gameElements = new HashMap<>();
        for (GameElement value : GameElement.values()) {
            gameElements.put(value, new ArrayList<>());
        }
        gameMap = null;
    }

    private GameMap gameMap;

    public GameMap getGameMap() {
        return gameMap;
    }

    public void setGameMap(GameMap gameMap) {
        this.gameMap = gameMap;
    }
}







